// 1. 资源消耗：cpu，内存
// const fs = require('fs')
// Buffer.alloc(1000)
// console.log(process.memoryUsage())
// // {
// //   rss: 19042304,//常驻内存
// //   heapTotal: 4468736,//执行前申请的总内存大小
// //   heapUsed: 2653088,//执行过程中实际使用的内存大小 导入fs后为2811304
// //   external: 880204,//扩展内存 用于存放底层c/c++核心模块
// //   arrayBuffers: 9898//高版本node新加入的，一片独立大小，不占据V8内存 Buffer.alloc(1000)后变成10898
// // }
// console.log(process.cpuUsage())
// // { 
// //   user: 46000, //用户cpu
// //   system: 62000  //操作系统cpu
// // }

// 2. 运行环境：运行目录、node环境、cpu架构、用户环境(开发环境)、系统平台
// console.log(process.cwd())
// //F:\project\lagou\lg_lesson17\notes\code\nodebase 运行目录
// console.log(process.version)
// // v14.17.0 node版本
// console.log(process.versions)
// // 更详细的版本信息 node v8 uv等
// // {
// //   node: '14.17.0',
// //   v8: '8.4.371.23-node.63',
// //   uv: '1.41.0',
// //   zlib: '1.2.11',
// //   brotli: '1.0.9',
// //   ares: '1.17.1',
// //   modules: '83',
// //   nghttp2: '1.42.0',
// //   napi: '8',
// //   llhttp: '2.1.3',
// //   openssl: '1.1.1k',
// //   cldr: '38.1',
// //   icu: '68.2',
// //   tz: '2020d',
// //   unicode: '13.0'
// // }
// console.log(process.arch)
// // x64 cpu架构 64位操作系统
// console.log(process.env)
// // 用户环境数据对象，里面信息很多，常用的有
// // NODE_ENV 用于判断开发环境还是生产环境，这里没有设置，为undefined
// // PATH 系统设置环境变量的path设置
// // USERPROFILE windows系统管理员目录 C:\Users\Administrator.DESKTOP-SMIKUI2，MAC系统则使用HOME
// console.log(process.platform)
// // win32 操作系统

// 3. 运行状态：启动参数、PID、运行时间
// console.log(process.argv)
// // 使用命令 node .\05-process.js 1 2
// // 返回数据：
// // [
// //   'E:\\Program Files\\nodejs\\node.exe',//node程序路径
// //   'F:\\project\\lagou\\lg_lesson17\\notes\\code\\nodebase\\05-process.js',//进程脚本文件路径
// //   '1',//运行时携带的参数
// //   '2'//运行时携带的参数
// // ]
// console.log(process.argv0)
// // E:\Program Files\nodejs\node.exe//argv数据的第一个数据，只有0，没有后面其他了
// // execArgv 获取带--的参数
// console.log(process.pid)
// // 13512 程序运行时生成的随机唯一id，还有ppid
// console.log(process.uptime())
// // 0.0850893 运行时间
// setTimeout(()=>{
//   console.log(process.uptime())
//   // 1.0832298
// },1000)

// 4. 事件监听
// // 退出事件
// process.on('exit', (code) => {
//   console.log('exit',code)
//   setTimeout(()=>{
//     console.log(123)
//     // 123不会显示，exit钩子函数中不能执行异步代码，因为程序执行完毕了，beforeExit可以
//   }, 1000)
// })
// // 退出前事件
// process.on('beforeExit', (code) => {
//   console.log('beforeExit',code)
// })
// console.log('代码执行完毕')
// // 代码执行完毕
// // beforeExit 0 正常退出code为0
// // exit 0
// process.exit()
// // 主动调用exit的话，只会执行exit钩子，不会执行beforeExit钩子
// // 代码执行完毕
// // exit 0

// 5. 标准输出 输入 错误
// // stdout输出流
// console.log = function (data) {
//   process.stdout.write('---'+data+'\n')
// }
// console.log(11)
// console.log(22)
// // ---11
// // ---22
// const fs = require('fs')
// fs.createReadStream('test.txt')
//   .pipe(process.stdout)
// // stdin输入流
// process.stdin.pipe(process.stdout)
// // 运行后，在控制台输入什么，就会输出打印什么
process.stdin.setEncoding('utf-8')
// readable为stdin控制台输入后的回调事件
process.stdin.on('readable', ()=>{
  let chunk = process.stdin.read()
  if(chunk!=null){
    process.stdout.write('data '+chunk)
  }
})
